home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Headers / ansi / stdio.h < prev    next >
C/C++ Source or Header  |  1992-12-12  |  8KB  |  294 lines

  1. /*
  2.  * Copyright (c) 1980 Regents of the University of California.
  3.  * All rights reserved.  The Berkeley software License Agreement
  4.  * specifies the terms and conditions for redistribution.
  5.  *
  6.  *    @(#)stdio.h    5.3 (Berkeley) 3/15/86
  7.  */
  8.  
  9. #ifndef _ANSI_STDIO_H
  10. #define _ANSI_STDIO_H
  11.  
  12. #include <standards.h>
  13.  
  14. #if defined(__STRICT_BSD__) || defined(__STRICT_ANSI__) 
  15.     #ifndef NULL
  16.         #define    NULL     0 
  17.     #endif 
  18. #else
  19.     #if defined (__STRICT_ANSI__)
  20.         #ifndef NULL
  21.             #define NULL    ((void *)0)
  22.         #endif
  23.     #else
  24.         #include <stddef.h> /* get NULL, errno */
  25.         #include <stdarg.h> /* get va_list */
  26.     #endif
  27. #endif    /* __STRICT_BSD__ || __STRICT_ANSI__ */
  28.  
  29.  
  30. #if defined(_NEXT_SOURCE) || defined(__STRICT_ANSI__)
  31.     #define    BUFSIZ    1024
  32. #endif /* _NEXT_SOURCE || __STRICT_ANSI__ */
  33.  
  34. extern struct _iobuf {
  35.     int    _cnt;
  36.     char    *_ptr;        /* should be unsigned char */
  37.     char    *_base;        /* ditto */
  38.     int    _bufsiz;
  39.     short    _flag;
  40. #ifdef    __NeXT__
  41.     unsigned char    _file;    /* should be short */
  42. #else
  43.     char    _file;        /* should be short */
  44. #endif    __NeXT__
  45.     char    _smallbuf;    /* character for unbuf file */
  46. } _iob[];
  47.  
  48. #define    _IOREAD    01
  49. #define    _IOWRT    02
  50. #if defined(__STRICT_ANSI__) || defined(_NEXT_SOURCE)
  51.     #define    _IONBF    04
  52. #endif /* __STRICT_ANSI__ || _NEXT_SOURCE */
  53. #define    _IOMYBUF    010
  54. #define    _IOEOF    020
  55. #define    _IOERR    040
  56. #define    _IOSTRG    0100
  57. #define    _IOLBF    0200
  58. #define    _IORW    0400
  59.  
  60. #if defined(__STRICT_ANSI__) || defined(_NEXT_SOURCE)
  61.     #define    FILE    struct _iobuf
  62.     #define    EOF    (-1)
  63.  
  64.     #define    stdin    (&_iob[0])
  65.     #define    stdout    (&_iob[1])
  66.     #define    stderr    (&_iob[2])
  67. #endif /* __STRICT_ANSI__ || _NEXT_SOURCE */
  68.  
  69. #ifdef __STRICT_BSD__
  70.     extern char *bsd_sprintf();
  71.     extern char *bsd_vsprintf();
  72.     #define sprintf bsd_sprintf
  73.     #define vsprintf bsd_vsprintf
  74.     extern FILE *fopen();
  75.     extern FILE *freopen();
  76.     extern long int ftell();
  77.     extern char *fgets();
  78.     extern char *gets();
  79. #else    /* !__STRICT_BSD__ */
  80.     #if defined(_NEXT_SOURCE) || defined(__STRICT_ANSI__)
  81.  
  82.         #ifndef _SIZE_T
  83.             #define _SIZE_T
  84.             typedef unsigned long    size_t;
  85.         #endif  /* _SIZE_T */
  86.  
  87.         #ifndef _FPOS_T
  88.             #define _FPOS_T
  89.             typedef long fpos_t;
  90.         #endif    /* _FPOS_T */
  91.  
  92.         #define _IOFBF    00    /* any value not equal to  */
  93.                     /* LBF or NBF */
  94.         #define L_tmpnam 14    /* large enough to hold */
  95.                     /* tmpnam result */
  96.         #define FOPEN_MAX 256    /* min files guaranteed */
  97.                     /* open simultaneously */
  98.         #define FILENAME_MAX 1024  /* max len string that can */
  99.                        /* be opened as file */
  100.     
  101.         #define SEEK_SET 0    /* arguments to fseek */
  102.                     /* function */
  103.         #define SEEK_CUR 1
  104.         #define SEEK_END 2
  105.         #define TMP_MAX 25    /* min unique file names */
  106.                     /* from tmpnam */
  107.  
  108.         #if __STDC__
  109.             extern int remove(const char *filename);
  110.             extern int rename(const char *old_name, \
  111.                         const char *new_name);
  112.             extern FILE *tmpfile(void);
  113.             extern char *tmpnam(char *s);
  114.             extern int fclose(FILE *stream);
  115.             extern int fflush(FILE *stream);
  116.             extern void setbuf(FILE *stream, char *buf);
  117.             extern int setvbuf(FILE *stream, char *buf, \
  118.                         int mode, size_t size);
  119.             extern int fprintf(FILE *stream, const char \
  120.                         *format, ...);
  121.             extern int fscanf(FILE *stream, const char \
  122.                         *format, ...);
  123.             extern int printf(const char *format, ...);
  124.             extern int scanf(const char *format, ...);
  125.             extern int sprintf(char *s, const char \
  126.                         *format, ...);
  127.             extern int sscanf(const char *s, const \
  128.                         char *format, ...);
  129.             #ifdef _VA_LIST
  130.                 extern int vfprintf(FILE *stream, \
  131.                       const char *format, va_list arg);
  132.                 extern int vprintf(const char *format, \
  133.                         va_list arg);
  134.                 extern int vsprintf(char *s, const \
  135.                         char *format, va_list arg);
  136.             #else
  137.                 extern int vfprintf();
  138.                 extern int vprintf();
  139.                 extern int vsprintf();
  140.             #endif    /* _VA_LIST */
  141.  
  142.             extern int fgetc(FILE *stream);
  143.             extern int fputc(int c, FILE *stream);
  144.             extern int fputs(const char *s, FILE *stream);
  145.             extern int getc(FILE *stream);
  146.             extern int _flsbuf(unsigned char c, FILE *iop);
  147.             extern int _filbuf(FILE *iop);
  148.             extern int getchar(void);
  149.             extern int putc(int c, FILE *stream);
  150.             extern int putchar(int c);
  151.             extern int puts(const char *s);
  152.             extern int ungetc(int c, FILE *stream);
  153.             extern size_t fread(void *ptr, size_t size, \
  154.                         size_t nmemb, FILE *stream);
  155.             extern size_t fwrite(const void *ptr, size_t \
  156.                     size, size_t nmemb, FILE *stream);
  157.             extern int fgetpos(FILE *stream, fpos_t *pos);
  158.             extern int fseek(FILE *stream, long int \
  159.                         offset, int whence);
  160.             extern int fsetpos(FILE *stream, const \
  161.                         fpos_t *pos);
  162.             extern void rewind(FILE *stream);
  163.             extern void clearerr(FILE *stream);
  164.             extern int feof(FILE *stream);
  165.             extern int ferror(FILE *stream);
  166.             extern void perror(const char *s);
  167.             extern FILE *fopen(const char *filename, \
  168.                         const char *mode);
  169.             extern FILE *freopen(const char *filename, \
  170.                         const char *mode, FILE *stream);
  171.             extern long int ftell(FILE *stream);
  172.             extern char *fgets(char *s, int n, FILE \
  173.                         *stream);
  174.             extern char *gets(char *s);
  175.         #else
  176.             extern int remove();
  177.             extern int rename();
  178.             extern FILE *tmpfile();
  179.             extern char *tmpnam();
  180.             extern int fclose();
  181.             extern int fflush();
  182.             extern void setbuf();
  183.             extern int setvbuf();
  184.             extern int fprintf();
  185.             extern int fscanf();
  186.             extern int printf();
  187.             extern int scanf();
  188.             extern int sprintf();
  189.             extern int sscanf();
  190.             extern int vfprintf();
  191.             extern int vprintf();
  192.             extern int vsprintf();
  193.             extern int fgetc();
  194.             extern int fputc();
  195.             extern int fputs();
  196.             extern int getc();
  197.             extern int _flsbuf();
  198.             extern int _filbuf();
  199.             extern int getchar();
  200.             extern int putc();
  201.             extern int putchar();
  202.             extern int puts();
  203.             extern int ungetc();
  204.             extern size_t fread();
  205.             extern size_t fwrite();
  206.             extern int fgetpos();
  207.             extern int fseek();
  208.             extern int fsetpos();
  209.             extern void rewind();
  210.             extern void clearerr();
  211.             extern int feof();
  212.             extern int ferror();
  213.             extern void perror();
  214.             extern FILE *fopen();
  215.             extern FILE *freopen();
  216.             extern long int ftell();
  217.             extern char *fgets();
  218.             extern char *gets();
  219.         #endif /* __STDC__ */
  220.     #endif /* _NEXT_SOURCE || __STRICT_ANSI__ */
  221. #endif /* __STRICT_BSD__ */    
  222.  
  223. #ifdef _POSIX_SOURCE
  224.     #define L_ctermid    256
  225.     #if __STDC__
  226.         extern char *ctermid(char *s);
  227.     #else
  228.         extern char *ctermid();
  229.     #endif /* __STDC__ */
  230. #endif /* _POSIX_SOURCE */
  231.  
  232. #if defined(_POSIX_SOURCE) || !defined(__STRICT_ANSI__)
  233.     #ifdef __STDC__
  234.         extern int fileno(FILE *stream);
  235.     #else
  236.         extern int fileno();
  237.     #endif /* __STDC__ */
  238.     #define    fileno(p)    ((p)->_file)
  239. #endif /* _POSIX_SOURCE && !__STRICT_ANSI__ */
  240.  
  241. #if defined(__STRICT_ANSI__) || defined(_NEXT_SOURCE)
  242.     #ifndef lint
  243.         #define    getc(p)    (--(p)->_cnt>=0? \
  244.             (int)(*(unsigned char *)(p)->_ptr++):_filbuf(p))
  245.         #endif /* not lint */
  246.  
  247.         #define    getchar()    getc(stdin)
  248.  
  249.         #ifndef lint
  250.             #define putc(x, p)    (--(p)->_cnt >= 0 ?\
  251.             (int)(*(unsigned char *)(p)->_ptr++ = (x)) :\
  252.             (((p)->_flag & _IOLBF) && -(p)->_cnt < (p)->_bufsiz ?\
  253.                 ((*(p)->_ptr = (x)) != '\n' ?\
  254.                 (int)(*(unsigned char *)(p)->_ptr++) :\
  255.                 _flsbuf(*(unsigned char *)(p)->_ptr, p)) :\
  256.                 _flsbuf((unsigned char)(x), p)))
  257.         #endif /* not lint */
  258.         #define    putchar(x)    putc(x,stdout)
  259.         #define    feof(p)        (((p)->_flag&_IOEOF)!=0)
  260.         #define    ferror(p)    (((p)->_flag&_IOERR)!=0)
  261.         #define    clearerr(p)    ((p)->_flag &= ~(_IOERR|_IOEOF))
  262. #endif    /* __STRICT_ANSI__ || _NEXT_SOURCE */
  263.         
  264. #if    defined(__STRICT_BSD__)
  265.         extern FILE     *fdopen();
  266.         extern FILE     *popen();
  267.         extern int    pclose();
  268. #else
  269.         #if !defined(__STRICT_ANSI__) || defined(_POSIX_SOURCE) \
  270.             || defined(_NEXT_SOURCE)
  271.             #ifdef __STDC__
  272.                 extern FILE *fdopen(int fildes, \
  273.                     const char *mode);
  274.             #else
  275.                 extern FILE *fdopen();
  276.             #endif    /* __STDC__ */
  277.         #endif /* !__STRICT_ANSI__ || _POSIX_SOURCE || _NEXT_SOURCE */
  278.  
  279.         #if defined(_NEXT_SOURCE)
  280.             #ifdef __STDC__
  281.                 extern FILE *popen(const char *command, \
  282.                            const char *mode);
  283.                 extern int pclose(FILE *stream);
  284.             #else
  285.                 extern FILE *popen();
  286.                 extern int pclose();
  287.             #endif    /* __STDC__ */
  288.         #endif /* _NEXT_SOURCE */
  289. #endif /* __STRICT_BSD__ */
  290.  
  291.  
  292.  
  293. #endif /* _ANSI_STDIO_H */
  294.